package org.example.basic.lambda.collectors.extend;


import org.example.basic.entity.UserEntity;
import org.example.basic.entity.UserEntityList;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * Filtering 案例
 * @deprecated 场景分析：
 *   1. 再分组的场景中先根据大条件做过滤后，再根据某个字段分组同时做过滤
 *
 * @author songyafei
 */
public class FilteringTest {

    public static void main(String[] args) {
        List<UserEntity> item = UserEntityList.getItem();

        /**
         * 场景： 过滤集合中用户id不为空的，根据创建日期分组，同时过滤每一组中年龄大于20 并且用户id大于0
         */
        Map<LocalDate, List<UserEntity>> l = item.stream()
                .filter(m-> null!=m.getUserId()).collect(
                    Collectors.groupingBy(m -> m.getCreatedDate(),
                    Collectors.filtering(m -> m.getAge() > 20 && m.getUserId()>0, Collectors.toList())));
         l.forEach((k,v)->{
            System.out.println("k = " + k + ",v=" + v);
        });

    }
}
